package com.xm.queue.util;

import com.xm.queue.core.task.ITask;

/**
 * 任务管理者
 * @author wang-xiaoming
 *
 */
public class TaskManager {
	
	/**
	 * 任务队列
	 */
	private TaskQueue taskQueue;
	
	/**
	 * 启动异步任务服务
	 */
	public void start(){
		this.start(MyUtil.DEFAULT_WORKER_COUNT);
	}
	
	/**
	 * 启动异步任务服务
	 * @param workerCount 任务执行工人数量
	 */
	public void start(int workerCount){
		this.taskQueue = new TaskQueue();
		if(workerCount > 0){
			for (int i = 0; i < workerCount; i++) {
				System.out.println("第" + (i + 1) + "个工人已在线");
				TaskExecutor.getInstance().execute(new TaskWorker(this));
			}
		}
	}
	
	/**
	 * 添加任务到任务队列
	 * @param task 任务
	 */
	public void addTask(ITask task){
		this.taskQueue.addTask(task);
	}
	
	/**
	 * 按照FIFO的规则获取一个任务
	 * @return 返回下一个任务
	 */
	public ITask getTask(){
		return this.taskQueue.nextTask();
	}
}
